package n_07;

import sun.security.util.AuthResources_it;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author ChengMiao
 * @date 2021/7/9 11:50
 * @Desc 整数反转
 * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果
 * 假设环境不允许存储 64 位整数（有符号或无符号）
 */
public class Demo {

    public static void main(String[] args) {
        reverse(-2147483648);
        // 2147483648
        // 9646324351
    }

    public static int reverse(int x) {

        boolean  isF = false;
        long y = 0l;
        if(x<0){
            y = Math.abs((long)x);
            isF =  true;
        }else{
            y = x;
        }

        long suffix = 10;
        String s = "";
        while (y % suffix != y)
        {
            long yu = y % suffix;
            if (yu != 0) {
                s = s + (yu / (suffix/10));
            }
            suffix *= 10;
        }

        s += y/(suffix/10);

        long l = Long.parseLong(s);
        if(l>Integer.MAX_VALUE){
            return 0;
        }

        return isF?-Integer.parseInt(s):Integer.parseInt(s);
    }

    // 我的
    public static int reverse2(int x) {

        char[] chars = String.valueOf(x).toCharArray();
        System.out.println(chars);


        int l = 0;
        if(!(chars[0]>=48 && chars[0]<=57)){
            // 符号位
            l=1;
        }

        if(chars.length-l ==1){
            return x;
        }

        StringBuilder s = new StringBuilder();
        if(l!=0){
            s.append("-");
        }

        for (int i = chars.length-1; i >=l; i--) {
            s.append(chars[i]);
        }

        Long i = Long.parseLong(s.toString());
        if(i > Integer.MAX_VALUE || i< Integer.MIN_VALUE){
            return 0;
        }

        int k = Integer.parseInt(String.valueOf(i));
        return k;
    }
}
